%{
	#include <stdio.h>
	#include <stdlib.h>
	#include <string.h>
	
	extern FILE* yyin;
	FILE* yyout;
%}

%token ENTIER PLUS FOIS PGAUCHE PDROITE RETOURLIGNE
%start debut
%left PLUS
%left FOIS
%left PGAUCHE

%%
debut : ligne 
	| ligne RETOURLIGNE debut
	| 
	;
ligne : E {fprintf(yyout,"\tRésultat : %d\n",$1);}
	;
E 	: E PLUS {fprintf(yyout," + ");} E {$$ = $1 + $4;fprintf(yyout,"\n");}
	| E FOIS {fprintf(yyout," * ");} E {$$ = $1 * $4;fprintf(yyout,"\n");}
	| PGAUCHE E PDROITE {$$ = $2;}
	| ENTIER {$$ = $1;fprintf(yyout,"%d",$1);}
	;
	
%%

int yyerror(char * s)
{
	printf("\nErreur : %s\n\n", s);
}

int main (int argc, char ** argv)
{
	if(argc != 3)
	{
		printf("\nUsage : %s <nom fichier en entrée> <nom fichier en sortie>\n\n",argv[0]);
		exit(-1);
	}	
	
	if ((yyin = fopen(argv[1], "r")) == NULL)
	{                  
		printf("\nErreur : impossible d'ouvrir le fichier %s\n\n", argv[1]);
		exit(-1);
	}
	
	if ((yyout = fopen(argv[2], "w+")) == NULL)
	{
		printf("Erreur : impossible de créer le fichier %s\n", argv[2]);
		exit(-1);          
	}
	
	yyparse();
	
	fclose(yyin);	
	fclose(yyout);
}
